

"""
### 如何自定义数据集：

- 1.数据和标签的目录结构先搞定(得知道到哪读数据)
- 2.写好读取数据和标签路径的函数(根据自己数据集情况来写)
- 3.完成单个数据与标签读取函数(给dataloader举一个例子)

### 咱们以花朵数据集为例：

- 原来数据集都是以文件夹为类别ID，现在咱们换一个套路，用txt文件指定数据路径与标签(实际情况基本都这样)
- 这回咱们的任务就是在txt文件中获取图像路径与标签，然后把他们交给dataloader
- 核心代码非常简单，按照对应格式传递需要的数据和标签就可以啦

## 先来分细节整明白咱一会要干啥！

#### 任务1：读取txt文件中的路径和标签

- 第一个小任务，从标注文件中读取数据和标签
- 至于你准备存成什么格式，都可以的，一会能取出来东西就行
"""

import os
import matplotlib.pyplot as plt
# %matplotlib inline
import numpy as np
import torch
from torch import nn
import torch.optim as optim
import torchvision
#pip install torchvision
from torchvision import transforms, models, datasets
#https://pytorch.org/docs/stable/torchvision/index.html
import imageio
import time
import warnings
import random
import sys
import copy
import json
from PIL import Image

def load_annotations(ann_file):
    # 这里定义一个对象/字典，然后生成一个kv结构的对象
    data_infos = {}
    with open(ann_file) as f:
        samples = [x.strip().split(' ') for x in f.readlines()]
        for filename, gt_label in samples:
            data_infos[filename] = np.array(gt_label, dtype=np.int64)
    return data_infos

"""

#### 任务2：分别把数据和标签都存在list里

- 不是我非让你存list里，因为dataloader到时候会在这里取数据
- 按照人家要求来，不要耍个性，让整list咱就给人家整
"""
img_label = load_annotations('data/flower_data/train.txt')
# 这里是将keys转换为list
image_name = list(img_label.keys())
label = list(img_label.values())

data_dir = 'data/flower_data/'
train_dir = data_dir + '/train_filelist'
valid_dir = data_dir + '/val_filelist'
# 这里是图像路径的列表
image_path = [os.path.join(train_dir,img) for img in image_name]


print('okkk')


















